package com.pf.business.export.helper;

import com.google.common.collect.Lists;
import com.pf.business.export.dto.ExportFillBill;
import com.pf.business.export.dto.ExportFillCriteria;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author PanFei
 * @version 1.0.0
 * @createTime 2023/7/16 13:17
 */
public class ExportDataHelper {

    public static List<ExportFillBill> getFillBillData(Integer nums) {
        List<ExportFillBill> billList = Lists.newArrayList();
        for (int i = 0; i < nums; i++) {
            int rowNum = i + 1;
            String billNo = "20230715" + rowNum;
            String billDesc = "账单描述" + rowNum;
            Integer billType = i % 2;
            String remark = "备注" + rowNum;
            ExportFillBill bill = new ExportFillBill(billNo, billDesc, billType, new BigDecimal("2000"), new Date(), remark);
            billList.add(bill);
        }
        return billList;
    }

    public static List<ExportFillCriteria> getFillCriteriaList() {
        ExportFillCriteria c1 = ExportFillCriteria.builder()
                .criteriaCode("20230716000001").criteriaType(0).criteriaName("智选准则")
                .firstCategory("智选@一级分类").secondCategory("智选二级分类").build();
        ExportFillCriteria c2 = ExportFillCriteria.builder()
                .criteriaCode("20230716000002").criteriaType(1).criteriaName("车规准则")
                .firstCategory("车规:一级分类").secondCategory("车规二级分类").build();
        ExportFillCriteria c3 = ExportFillCriteria.builder()
                .criteriaCode("20230716000003").criteriaType(2).criteriaName("其他准则")
                .firstCategory("其他一级").secondCategory("其他二级").build();
        return Lists.newArrayList(c1, c2, c3);
    }

    public static List<String> getCriteriaNameList() {
        return Lists.newArrayList("智选准则", "车规准则", "其他准则");
    }

    /**
     * 模拟的三级联动下拉选项信息
     *
     * @return
     */
    public static Map<String, List<String>> getCriteriaMap() {
        /**
         * 智选准则  智选@一级分类  智选二级分类
         * 智选准则  智选@一级分类  智选二级分类2
         * 智选准则  智选一级分类  智选二级分类
         * 智选准则  其他一级  其他二级
         * 车规准则  车规:一级分类  车规二级分类
         * 车规准则  车规:一级分类  车规二级分类2
         * 车规准则  其他一级  其他二级
         * 其他准则  其他一级  其他二级
         */

        Map<String, List<String>> map = new HashMap<>();

        /**
         * 问题1.组装名称管理器数据时，为什么key要以下划线开头？
         * 解答:考虑准则名称列万一选项是（A2或B2），名称管理器也会报错，因为excel会将其当做特殊符号处理。
         *
         * 问题2：因需求中一级分类列有（其他一级）选项是重复的，但所属的准则名称不一样，需要处理，不然创建名称管理器时，会发生重名现象。
         * 解答:所以一级分类对应的名称管理器名称使用：【准则名称_一级分类】格式将其连接，这样就不会重复。
         */
        map.put("_智选准则", Lists.newArrayList("智选@一级分类", "智选一级分类", "其他一级"));
        map.put("_车规准则", Lists.newArrayList("车规:一级分类", "其他一级"));
        map.put("_其他准则", Lists.newArrayList("其他一级"));
        map.put("_智选准则_智选@一级分类", Lists.newArrayList("智选二级分类", "智选二级分类2"));
        map.put("_智选准则_智选一级分类", Lists.newArrayList("智选二级分类"));
        map.put("_智选准则_其他一级", Lists.newArrayList("其他二级"));
        map.put("_车规准则_车规:一级分类", Lists.newArrayList("车规二级分类", "车规二级分类2"));
        map.put("_车规准则_其他一级", Lists.newArrayList("其他二级"));
        map.put("_其他准则_其他一级", Lists.newArrayList("其他二级"));
        return map;
    }
}
